#include <iostream>
#include <vector>
#include <list>
#include <string>
#include <sw/redis++/redis++.h>

using namespace sw::redis;

void test_1(Redis &redis)
{
    redis.flushall();
    redis.zadd("key", "zhangsan",10);
    redis.zadd("key", {std::make_pair("wangwu",30),std::make_pair("lisi",20)});
    std::vector<std::pair<std::string, double>> vec{
        std::make_pair("zhaoliu",40),
        std::make_pair("tianqi",50)
    };
    redis.zadd("key", vec.begin(), vec.end());

    std::vector<std::pair<std::string, double>> ans;
    auto res = std::back_inserter(ans);
    redis.zrange("key", 0, -1, res);

    for(auto e : ans)
        std::cout << e.first  << ":" << e.second<< std::endl;

    std::cout << redis.zcard("key") << std::endl;
}

void test_2(Redis &redis)
{
    redis.flushall();
    redis.zadd("key", "zhangsan",10);
    redis.zadd("key", {std::make_pair("wangwu",30),std::make_pair("lisi",20)});

    redis.zrem("key", "zhangsan");
    long long n = redis.zcard("key");
    std::cout << n << std::endl;

    auto ans = redis.zscore("key", "lisi");
    if(ans) std::cout << ans.value() << std::endl;
    else std::cout << "not exist" << std::endl;

    auto res = redis.zrank("key", "lisi");
    if(res) std::cout << res.value() << std::endl;
    else std::cout << "not exist" << std::endl;
}



int main()
{
    Redis redis("tcp://127.0.0.1:6379");
    // test_1(redis);
    test_2(redis);


    return 0;
}